/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CONTABILIDAD_CONTROLADOR;

import CONTABILIDAD_MODELO.CON_CHEQUE;
import CONTABILIDAD_MODELO.CON_MONEDA;
import Conexion.Conexion;
import RRHH_Modelo.RHH_USUARIO;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author equipo_4
 */
@WebServlet(name = "CON_VISTA_CHEQUE_CONTROLLER", urlPatterns = {"/CON_VISTA_CHEQUE_CONTROLLER"})
public class CON_VISTA_CHEQUE_CONTROLLER extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
           
            
        } finally {            
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            
            String data="";
            RHH_USUARIO usuario = ((RHH_USUARIO)request.getSession().getAttribute("usr"));
            Conexion con = new Conexion(usuario.getUSUARIO(), usuario.getPASSWORD());
            
            String evento = request.getParameter("evento");
            
            switch(evento)
            {
                case "estado":
                    estado(request, response, con);
                    break;
                case"buscarnombre":
                    data=buscarnombre(request, response, con);
                    break;
            }
            
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/plain");
            response.getWriter().write(data);
            con.Close();
            
        } catch (SQLException ex) {
            Logger.getLogger(CON_VISTA_CHEQUE_CONTROLLER.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }
    
    public void estado(HttpServletRequest request, HttpServletResponse response, Conexion con) throws SQLException
    {
            Double id = Double.parseDouble(request.getParameter("id"));
            Double estado = Double.parseDouble(request.getParameter("estado"));
            
            CON_CHEQUE cheque = new CON_CHEQUE();
            cheque.setCon(con);
            if(estado==0)
                cheque.activar(id);
            else
                cheque.anular(id);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

    private String buscarnombre(HttpServletRequest request, HttpServletResponse response, Conexion con) throws SQLException {
        String data ="";
        String nombre = request.getParameter("nombre");
        String numero = request.getParameter("numero");
        String dia = request.getParameter("dia");
        String monto = request.getParameter("monto");
        String monto_base = request.getParameter("monto_base");
        String comprobante = request.getParameter("comprobante");
        String cod_cuenta = request.getParameter("cod_cuenta");
        String cod_centro = request.getParameter("cod_centro");
        String desc_centro = request.getParameter("desc_centro");
        String desc_cuenta = request.getParameter("desc_cuenta");
        String estados = request.getParameter("estado");
        String tipo = request.getParameter("tipo");
        
        String mes = "";
        String ano = "";
        String de = "";
        String hasta = "";
        if(tipo.equals("1"))
        {
            de = request.getParameter("de");
            hasta = request.getParameter("hasta");
        }
        else
        {
            mes =request.getParameter("mes");
            ano = request.getParameter("ano");
        }         
         
        String consulta ="";
        
        if(cod_centro.equals("")&&desc_centro.equals(""))
        {
        
            if(tipo.equals("0"))
            {

                consulta = "select * from BROKER.CON_VISTA_CHEQUE \n" +
                            "where NRO_CHEQUE like '"+numero+"%' \n" +
                            "and UPPER(NOMBRE) like UPPER('"+nombre+"%') \n" +
                            "and MONTO like '"+monto+"%' \n" +
                            "and MONTO_BASE like '"+monto_base+"%'\n" +
                            "and COMPROBANTE like '"+comprobante+"%'\n" +
                            "and CODIGO_CUENTA like '"+cod_cuenta+"%' \n" +
                            "and UPPER(DESCRIPCION_CUENTA) like UPPER('"+desc_cuenta+"%')\n" +
                            "and (CODIGO_CENTRO_COSTO like '"+cod_centro+"%' or CODIGO_CENTRO_COSTO is null)\n" +
                            "and (UPPER(DESCRIPCION_CENTRO_COSTO) like UPPER('"+desc_centro+"%') or DESCRIPCION_CENTRO_COSTO is null)\n" +
                            "and ESTADO like '"+estados+"%'\n" +
                            "and COMPROBANTE like '%-"+mes+"-"+ano+"'\n" +
                            "and to_char(FECHA,'DD/MM/YYYY') like '"+dia+"%' ORDER BY ID";
            }
            else
            {
                consulta = "select * from BROKER.CON_VISTA_CHEQUE \n" +
                            "where NRO_CHEQUE like '"+numero+"%' \n" +
                            "and UPPER(NOMBRE) like UPPER('"+nombre+"%') \n" +
                            "and MONTO like '"+monto+"%' \n" +
                            "and MONTO_BASE like '"+monto_base+"%'\n" +
                            "and COMPROBANTE like '"+comprobante+"%'\n" +
                            "and CODIGO_CUENTA like '"+cod_cuenta+"%' \n" +
                            "and UPPER(DESCRIPCION_CUENTA) like UPPER('"+desc_cuenta+"%')\n" +
                            "and (CODIGO_CENTRO_COSTO like '"+cod_centro+"%' or CODIGO_CENTRO_COSTO is null)\n" +
                            "and (UPPER(DESCRIPCION_CENTRO_COSTO) like UPPER('"+desc_centro+"%') or DESCRIPCION_CENTRO_COSTO is null)\n" +
                            "and ESTADO like '"+estados+"%'\n" +
                            "and FECHA between to_date('"+de+"','DD/MM/yyyy') and to_date('"+hasta+"','DD/MM/YYYY')  ORDER BY ID";
            }
        }
        else
        {
            if(tipo.equals("0"))
            {

                consulta = "select * from BROKER.CON_VISTA_CHEQUE \n" +
                            "where NRO_CHEQUE like '"+numero+"%' \n" +
                            "and UPPER(NOMBRE) like UPPER('"+nombre+"%') \n" +
                            "and MONTO like '"+monto+"%' \n" +
                            "and MONTO_BASE like '"+monto_base+"%'\n" +
                            "and COMPROBANTE like '"+comprobante+"%'\n" +
                            "and CODIGO_CUENTA like '"+cod_cuenta+"%' \n" +
                            "and UPPER(DESCRIPCION_CUENTA) like UPPER('"+desc_cuenta+"%')\n" +
                            "and (CODIGO_CENTRO_COSTO like '"+cod_centro+"%')\n" +
                            "and (UPPER(DESCRIPCION_CENTRO_COSTO) like UPPER('"+desc_centro+"%'))\n" +
                            "and ESTADO like '"+estados+"%'\n" +
                            "and COMPROBANTE like '%-"+mes+"-"+ano+"'\n" +
                            "and to_char(FECHA,'DD/MM/YYYY') like '"+dia+"%' ORDER BY ID";
            }
            else
            {
                consulta = "select * from BROKER.CON_VISTA_CHEQUE \n" +
                            "where NRO_CHEQUE like '"+numero+"%' \n" +
                            "and UPPER(NOMBRE) like UPPER('"+nombre+"%') \n" +
                            "and MONTO like '"+monto+"%' \n" +
                            "and MONTO_BASE like '"+monto_base+"%'\n" +
                            "and COMPROBANTE like '"+comprobante+"%'\n" +
                            "and CODIGO_CUENTA like '"+cod_cuenta+"%' \n" +
                            "and UPPER(DESCRIPCION_CUENTA) like UPPER('"+desc_cuenta+"%')\n" +
                            "and (CODIGO_CENTRO_COSTO like '"+cod_centro+"%')\n" +
                            "and (UPPER(DESCRIPCION_CENTRO_COSTO) like UPPER('"+desc_centro+"%') )\n" +
                            "and ESTADO like '"+estados+"%'\n" +
                            "and FECHA between to_date('"+de+"','DD/MM/YYYY') and to_date('"+hasta+"','DD/MM/YYYY')  ORDER BY ID";
            }
        }
        
        ResultSet rs = con.EjecutarConsulta(consulta);
        CON_MONEDA moneda = new CON_MONEDA();
        moneda.setCon(con);
        moneda=moneda.getMonedaBase(0);
         data+="<thead>";
            data+="<th class='pequeño'>NUMERO</th>";
            data+="<th class='pequeño'>TIPO</th>";
            data+="<th class='normal'>FECHA</th>";
            data+="<th class='mediano'>NOMBRE</th>";
            data+="<th class='chico'>MONTO</th>";
            data+="<th class='chico'>MONTO "+moneda.getACRONIMO()+"</th>";
            data+="<th class='normal'>COMPROBANTE</th>";
            data+="<th class='mediano'>CODIGO CUENTA</th>";
            data+="<th class='grande'>DESCRIPCION CUENTA</th>";
            data+="<th class='mediano'>CODIGO CENTRO</th>";
            data+="<th class='grande'>DESCRIPCION CENTRO</th>";
            data+="<th class='pequeño'>EST.</th>";
            data+="</thead>";
            data+="<tbody>";
            double montoBase=0;

            while(rs.next())
            {
                        data+="<tr>";
            data+="<td>"+(int)rs.getDouble("NRO_CHEQUE")+"</td>";
            data+="<td>"+rs.getString("TIPO")+"</td>";
            data+="<td>"+rs.getDate("FECHA")+"</td>";
            data+="<td>"+rs.getString("NOMBRE")+"</td>";
            data+="<td>"+rs.getDouble("MONTO")+"</td>";
            montoBase+=rs.getDouble("MONTO_BASE");
            data+="<td>"+rs.getDouble("MONTO_BASE")+"</td>";
            data+="<td>"+rs.getString("COMPROBANTE")+"</td>";
            data+="<td>"+rs.getString("CODIGO_CUENTA")+"</td>";
            data+="<td>"+rs.getString("DESCRIPCION_CUENTA")+"</td>";
             
            String cod_cen = rs.getString("CODIGO_CENTRO_COSTO");
            if(cod_cen!=null)
                data+="<td>"+cod_cen+"</td>";
            else
                data+="<td></td>";
            
            String desc_cen = rs.getString("DESCRIPCION_CENTRO_COSTO");
            if(desc_cen!=null)
                data+="<td>"+desc_cen+"</td>";
            else
                data+="<td></td>";
            
            Double estado = rs.getDouble("Estado");    

            data+="<td><span data-id=\""+rs.getDouble("ID")+"\"></span>";
            if(estado==0.0)
            {
                data+="<input onchange='estado(this);'  type='checkbox' checked/>";
            }
            else
            {
                data+="<input onchange='estado(this);'  type='checkbox'/>";
            }                        

            data+="</td>";
            data+="</tr>";
            }

            data+="</tbody>";
            data+="<tfoot>";
            data+="<td colspan='4'>TOTAL</td>";
            data+="<td>"+montoBase+"</td>";    
            data+="</tfoot>";
        return data;
    }         
}
